const express = require('express');
const router = express.Router();
const db = require('../../../../util/dbConfig/dbConfig')
const dateReplace = require('../../../../public/javascripts/timeFormat')

//单一新增
router.post('/single',async (req,res) => {
    //鉴权
    if(req.session.userInfo.admin === 1 || !req.session.userInfo) {
        return res.send({
            code: 3,
            msg: '您未登录或权限不够'
        })
    }
    // let obj = {
    //     sheepId:3,         //羊只编号
    //     //上面是索引
    //     //下面是修改内容
    //     date:'2021-10-16T15:00:01Z',         //发病日期
    //     symptom:'test',       //临床症状
    //     diseaseName:"1",    //诊断病名
    //     handlingMethod:"1", //处理方法
    //     drugName:"1",       //用药名称
    //     morbidDate:"1",     //发病时长
    //     effect:"1",         //治疗效果(已康复，康复中，已去世)
    //     remark:""             //备注
    // }
    //接受参数
    let {
        sheepId,         //羊只编号
        date,         //发病日期
        symptom,       //临床症状
        diseaseName,    //诊断病名
        handlingMethod, //处理方法
        drugName,       //用药名称
        morbidDate,     //发病时长
        effect,         //治疗效果(已康复，康复中，已去世)
        remark,             //备注
    } = req.body
    //格式化时间
    date =  await dateReplace(date,res)
    let arr = [
        sheepId,         //羊只编号
        date,         //发病日期
        symptom,       //临床症状
        diseaseName,    //诊断病名
        handlingMethod, //处理方法
        drugName,       //用药名称
        morbidDate,     //发病时长
        effect,         //治疗效果(已康复，康复中，已去世)
    ]
    for(let i = 0; i<arr.length; i++){
        if(arr[i] === null || arr[i] === undefined){
            return res.send({
                code: 1,
                msg: '参数错误，有选项为空'
            })
        }
    }
    try{
        //查询羊
        let findSqlMu = `select ID from sheep where ID=? `
        let findSqlArr = [sheepId]
        let findResult = await db.SySqlConnect(findSqlMu,findSqlArr)
        if(findResult.length === 0){
            return res.send({
                code: 2,
                msg: '该羊不存在'
            })
        }
        //该羊存在
        let addSql = `insert into sheepcase (
            SHEEP_ID,
            FALL_ILL_DATE,
            SYMPTOM,
            DISEASE_NAME,
            HANDLING_METHOD,
            DRUG_NAME,
            MORBID_DATE,
            THERAPEUTIC_EFFECT,
            REMARK
        ) values(?,?,?,?,?,?,?,?,'${remark}')`

        let addResult = await db.SySqlConnect(addSql,arr)
        if(addResult.affectedRows === 1){
            return res.send({
                code: 0,
                msg: '添加成功'
            })
        }else{
            return res.send({
                code: 2,
                msg: '添加失败'
            })
        }
    }catch (e) {
        console.log(e);
        return res.send({
            code: 4,
            msg: '服务器错误，请稍后再试'
        })
    }
})

//批量新增
router.post('/batch', async (req,res) => {
    //鉴权
    if(req.session.userInfo.admin === 0 || !req.session.userInfo) {
        return res.send({
            code: 3,
            msg: '您未登录或权限不够'
        })
    }
    let {arr} = req.body
    arr = JSON.parse(arr)

    let containers = [] //存放 当前sql保存的数据的  容器 *只有一条数据
    let resultArr = []  //存放 sql保存数据 结果的状态，成功为1，失败为0
    let allContainers = [] //存放所有要保存的数据
    let result //定义保存 结果的状态

    //循环参数数组每一条数据
    for(let i =0; i< arr.length;i++){

        //迭代参数数组的每一条对象内的所有值
        for (let Key in arr[i]) {
            //将参数数组中的对象的值 保存到容器中
            // if(Key === '牧户姓名' || Key === 'ID'){
            //     continue;
            // }
            containers.push(arr[i][Key])
        }
        console.log(containers);
        //定义每条数据的长度
        let index = Object.keys(arr[0]).length
        console.log(index);
        //如果容器的长度为两条数据的长度
        if(containers.length>=2*index){
            //使容器长度为一条数据长度，内容为后进入的最后一条数据
            containers = containers.splice(index,2*index-1)
        }
        //containers.length===9
        //时间索引列表
        let timeIndex = [
            containers.length -8
        ]
        //时间格式修改
        for(let t = 0; t<timeIndex.length; t++){
            let date = containers[timeIndex[t]] + ''
            if(date.indexOf('T') !== -1 || date.indexOf('Z') !== -1 ){
                //T在Z不在，或者Z在T不在，或者T和Z都在
                if(date.indexOf('T') !== -1 && date.indexOf('Z') !== -1 ){
                    //T和Z都在
                    containers[timeIndex[t]] = date.replace('T',' ').replace('Z',' ')
                }else{
                    return res.send({
                        code: 1,
                        msg: '请填选正确日期格式'
                    })
                }
            }
        }



        let sql =  `insert into sheepcase (
            SHEEP_ID,
            FALL_ILL_DATE,
            SYMPTOM,
            DISEASE_NAME,
            HANDLING_METHOD,
            DRUG_NAME,
            MORBID_DATE,
            THERAPEUTIC_EFFECT,
            REMARK
        ) values(?,?,?,?,?,?,?,?,?)`

        db.sqlConnect(sql,containers,(err,data) =>{
            if (err){
                //如果报错，保存数据的结果状态为0，添加到状态保存容器
                resultArr.push(0)
                console.log(err);
                return res.send({
                    code: 4,
                    msg: '服务器错误，请稍后再试'
                })
            }
        })
        resultArr.push(1)
        allContainers.push(containers)
        // try{
        //     result = await db.SySqlConnect(sql,containers)
        // }catch (e) {
        //     //如果报错，保存数据的结果状态为0，添加到状态保存容器
        //     resultArr.push(0)
        //     console.log(e);
        //     return res.send({
        //         code: 4,
        //         msg: '服务器错误，请稍后再试'
        //     })
        // }

    }

    //循环结果数组，检查是否有失败项
    for (let j =resultArr.length-1;j>=0;j--){
        if(resultArr[j] !==1 ){
            return res.send({
                code: 2,
                msg: '添加错误，请检查表格是否正确'
            })
        }
    }

    //成功返回
    res.send({
        code: 0,
        msg: `添加成功${allContainers.length}条`,
        allContainers,  //成功添加的每一条数据
        resultArr       //每条数据的保存状态是否成功
    })
})

module.exports = router
